//
//  UIImageView+ZKChain.h
//  ChainFun
//
//  Created by 洪绵卫 on 2022/1/10.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN
/*
     所有函数均只有getter函数.
     zk_frame 对应的 frame属性 其余一样，去除zk_ 后边的为对应的属性名
 */
@interface UIImageView (ZKChain)

/* 因为父类的Category中返回的是UIView类型，不便于链式继续调用，所以这里写同名的get方法，返回值不同 */

/// 初始化 没有设置Frame
+ (UIImageView * _Nonnull (^)(void))zk_allocInit;

/// 带Frame的初始化
+ (UIImageView * _Nonnull (^)(CGRect))zk_allocInitWithFrame;

/// 设置View的Frame
- (UIImageView * _Nonnull (^)(CGRect))zk_frame;

/// 设置View的背景色
- (UIImageView * _Nonnull (^)(UIColor * _Nonnull))zk_backgroundColor;

/// 将View添加到父视图上
- (UIImageView * _Nonnull (^)(UIView * _Nonnull))zk_addToSuperView;

/// 设置View是否允许交互
- (UIImageView * _Nonnull (^)(BOOL))zk_userInteractionEnabled;

/// 设置View的Tag
- (UIImageView * _Nonnull (^)(NSInteger))zk_tag;

/// 设置View的Bounds
- (UIImageView * _Nonnull (^)(CGRect))zk_bounds;

/// 设置View的中心点
- (UIImageView * _Nonnull (^)(CGPoint))zk_center;

/// 设置View的透明度
- (UIImageView * _Nonnull (^)(CGFloat))zk_alpha;

/// 设置View的隐藏状态
- (UIImageView * _Nonnull (^)(BOOL))zk_hidden;

/// 设置View的TitColor
- (UIImageView * _Nonnull (^)(UIColor * _Nonnull))zk_tintColor;


#pragma mark 对应UIImageView 的一些属性

/// 带图片的初始化 
+ (UIImageView * _Nonnull (^)(UIImage *_Nullable))zk_allocInitWithImage;

/// 设置图片
- (UIImageView * _Nonnull (^)(UIImage *_Nullable))zk_image;

/// 设置高亮状态下的图片
- (UIImageView * _Nonnull (^)(UIImage *_Nullable))zk_highlightedImage;

/// 设置是否为高亮状态
- (UIImageView * _Nonnull (^)(BOOL))zk_highlighted;

/// 动画图片组
- (UIImageView * _Nonnull (^)(NSArray<UIImage *> * _Nullable))zk_animationImages;

/// 高亮状态下的动画图片组
- (UIImageView * _Nonnull (^)(NSArray<UIImage *> * _Nullable))zk_highlightedAnimationImages;

/// 动画时长
- (UIImageView * _Nonnull (^)(NSTimeInterval))zk_animationDuration;

/// 动画重复次数
- (UIImageView * _Nonnull (^)(NSInteger))zk_animationRepeatCount;

#pragma mark 对应UIImageView 的一些方法

/// 开始动画
- (UIImageView * _Nonnull (^)(void))zk_startAnimating;

/// 结束动画
- (UIImageView * _Nonnull (^)(void))zk_stopAnimating;

@end

NS_ASSUME_NONNULL_END
